local recipes = 
{--制作栏中所有物品的相关数据
--[[
    数据示例：
    {
        prefabname:必选，产品的prefab名，为空时则要填写config中的product
        name_cn：物品的中文名称,只有在prefabname不为空时才会设置对应的中文名称
        describe:物品的人物检查描述，默认是通用检查语句，如果需要针对特殊角色特殊检查，需要额外写
        desc：物品制作栏中的描述
        ingredients:格式为{Ingredient(参数1，参数2，参数3，参数4，参数5)}
                    [
                        参数1:string,原料的prefab名
                        参数2：number，所需对应原料的数量
                        参数3：string，可选参数，所需原料的图集路径，即atlas路径，如果用的是官方的图或者提前注册过了，可以不写，一般为了不必要的麻烦都会顺带写上
                        参数:4：bool，该产品拆解时是否会返还这个原料，可选
                        参数5：string，该材料的image名，注意需要加.tex文件后缀，一般用于alats文件中image名和alats名不一致的情况，但是为了保险一般启用alts路径的时候都会带上
                    ]
        tech：解锁所需的科技能级，必须使用常量表TECH的值，比如TECH.NONE这种
        config：额外配置表，格式如下：
                    {
                        1.placer:string,放置物prefab名，如果为空则不生成放置物,举例:'wall_stone_placer'
                        2.min_spacing:number,放置物最小间距，如果为空则无间距
                        3.nounlock:bool,是否需要解锁，如果为true，该配方不需要解锁就能看到和制作
                        4.numtogive:number,制作时产出的数量，默认为1
                        5.product:string,产品prefab名，如果与配方名不同，则实际产出是product，但是制作菜单页面的相关描述是配方名
                        6.builder_tag:string,只有拥有该标签的角色才能看到该配方
                        7.builder_skill:string,只有拥有该技能树技能名称的角色才能看到该配方
                        8.no_builder_tag:string或table，拥有这些标签的角色无法看到该配方
                        9.no_builder_skill：string，拥有该名称技能树的角色无法看到该配方
                        10.atlas：产品的图集路径，即atlas路径，如果用的是官方的图或者提前注册过了，可以不写，一般为了不必要的麻烦都会顺带写上
                        11.image：string或function，指定配方在制作菜单中显示的图标文件名，或返回图标的函数，必须要和atlas中的tex配对，注意需要加.tex文件后缀
                        12.nameoverride：string，覆盖制作菜单中显示的配方名称
                        13.description：string，覆盖制作菜单中显示的描述
                        14.actionstr：string，自定义制作按钮显示的动作文字
                        15.hint_msg：string，配合force_hint使用，用于提示玩家解锁配方时需要的条件
                        16.force_hint：bool，是否强制显示本该被隐藏的锁定配方，举例：
                                        对于沃尔特的专属配方，当该配置为true时，如果玩家不是沃尔特：显示但锁定，提示需要沃尔特；如果是沃尔特但未学会技能：显示但锁定，提示需要学习技能。具体提示内容是根据hint_msg来决定的
                        17.testfn：function，自定义建造位置测试函数，用于验证是否可以在指定位置建造,返回值为bool，表示是否能够在该位置建造，参数如下：
                            [
                                1.pt（放置位置坐标，Vector3 或包含 x, y, z 的表）
                                2.rot（建筑的旋转角度，number）
                            ]

                        18.canbuild：自定义制作条件检查函数，返回一个布尔值和sting的error_msg，表示是否制作成功以及失败原因，函数参数详情如下：
                            [
                                recipe：(table) 配方对象实例，当前正在尝试制作的配方
                                builder：table，建造者实例，通常是玩家
                                pt ：(Vector3 或 nil)，可选，制作位置坐标（对于放置类物品）
                                rotation： (number或nil)可选，旋转角度
                                station：（table），可选，当前使用的制作站实体
                            ]
                        19.sg_state：string，覆盖制作时使用的状态图状态（旧名：buildingstate）
                        20.override_numtogive_fn：function，返回一个数字，用于动态计算制作数量的函数，会覆盖numtogive
                        21.build_mode：数字，指定建造模式，目前游戏支持的有：
                            [
                                BUILDMODE.NONE = 0（无特定模式）  
                                BUILDMODE.LAND = 1（陆地建造）  
                                BUILDMODE.WATER =2（ 水上建造）
                            ]
                        22.build_distance：number，建造距离，人物摆放建筑时需要走到鼠标一定范围内才会触发建造动作
                        23.no_deconstruction：bool或function，禁止拆解该物品，如果是true则完全禁止，如果是函数，参数为inst，能通过控制函数的返回值来达到部分禁止
                        24.decon_ignores_finiteuses：bool或function，用于决定分解物品时，是否要考虑物品的耐久度来计算返还材料的数量，如果是true则不考虑，如果是函数，参数为inst，能通过控制函数的返回值来达到部分情况考虑
                        25.manufactured：boolean，如果为true，由制作站处理物品创建，而不是建造者组件。举例：
                            当为false时，是由玩家的builder组件生成物品并放入背包。
                            当为true时，由制作台的prototyper组件的onactivate函数处理
                            具体例子就是官方的疯狂科学实验室，制作对应的药水后，制作台会将药水发射到玩家附近
                        26.station_tag：string，指定需要特定标签的制作站才能制作
                        27.limitedamount：number，设置配方的限量制作数量，即最多只能做几个
                        28.require_special_event：string，指定需要特定的特殊事件才能制作，如winter_feast表示只有冬季盛宴才能制作
                        29.dropitem：bool，制作完成后是掉落在地还是放入背包
                        30.fxover：table，用在制作菜单中为配方图标添加特效动画覆盖层。举例：
                            fxover={ 
                                bank="inventory_fx_shadow", 
                                build="inventory_fx_shadow", 
                                anim="idle" 
                            }
                            官方通过这个参数为老麦的暗影魔术帽子添加了暗影特效
                        31.filter：string 或 table，指定配方在制作菜单中的过滤器分类，现在一般都不在这里写，而是直接在AddRecipe2的最后一项参数中填写
                        32.forward_ingredients：table，技当某个材料的基础配方被技能树锁定时，提供替代配方，举例：
                            [
                                no_builder_skill="walter_camp_rope",  -- 沃尔特野营技能会锁定这个配方
                                forward_ingredients={"walter_rope"}   -- 转发到沃尔特的绳子配方
                            ]
                            沃尔特学会野营技能后，普通绳子配方被锁定,当其他配方需要绳子作为材料时，自动使用沃尔特的特殊绳子配方,保证制作流程不会因技能树而中断
                        33.source_recipename：string，用于解构配方，指向原始制作配方，主要服务于薇诺娜的配方扫描器,举例:
                            [
                                {source_recipename = "steeringwheel_item"}
                            ]
                            玩家用薇诺娜扫描已部署的船舵,扫描器通过source_recipename找到原始的steeringwheel_item配方,解锁的是制作船舵的配方，而不是解构配方
                        34.allowautopick：bool，控制有特殊建造要求的物品是否可以被自动拾取系统收集。说明：
                            [
                                有builder_tag或builder_skill的配方 → 默认不能自动拾取,设置allowautopick = true → 覆盖默认行为，允许拾取
                                比如沃姆伍德有自动收集植物的能力，但默认情况下，有builder_skill要求的物品会被标记为donotautopick，而设置allowautopick = true可以让这些特殊物品重新被自动收集。

                            ]
                    }
        filters：table，用于设置配方在制作菜单中的过滤器分类。目前官方的分类如下：
                [
                    "TOOLS"：工具
                    "LIGHT"：光源
                    "PROTOTYPERS"：原型机和制作站
                    "REFINE"：精炼材料
                    "WEAPONS"：武器
                    "ARMOUR"：护甲
                    "CLOTHING"：服装
                    "RESTORATION"：治疗
                    "MAGIC"：魔法
                    "DECOR"：装饰
                    "STRUCTURES"：建筑
                    "CONTAINERS"：存储
                    "COOKING"：烹饪
                    "GARDENING"：食物和园艺
                    "FISHING"：钓鱼
                    "SEAFARING"：航海
                    "RIDING"：骑行
                    "WINTER"：冬季物品
                    "SUMMER"：夏季物品
                    "RAIN"：雨具
                ]
        
    }
]]

    {
        prefabname = "tsqt_phonograph",
        name_cn = "松鼠留声机",
        describe = "这是松鼠留声机",
        desc = "制作松鼠留声机",
        ingredients = {
            Ingredient("log", 1),
        },
        tech = TECH.NONE,
        config = {
            placer = "tsqt_phonograph_placer",
            atlas = "images/map_icons/tsqt_phonograph.xml",
            image = "tsqt_phonograph.tex",
        },
        filters = {"DECOR",'STRUCTURES'},
    },


}
















return {
    recipes = recipes,
}